#ifndef BASEWRITER_H
#define BASEWRITER_H
#include <QDebug>
#include <QList>
#include <QStringList>
#include <QString>
#include <QFile>
#include <QTextStream>
#include "person.h"

/**
 * @file basewriter.h
 * @author  Paweł Hanejko <phanejko@gmail.com>
 * @version 1.0
 *
 * @section LICENSE
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details at
 * http://www.gnu.org/copyleft/gpl.html
 *
 * @section DESCRIPTION
 *
 * Plik nagłównkowy zawiera definicję klasy BaseWriter,
 * którą wykorzystuje się do zapisu użytkownika do pliku basefile.
 */


class BaseWriter
{
private:

    ///< plik basefile
    QFile* basefile;
public:

    /**
     * Konstruktor ustawiający basefile
     *
     * @param str ścieżka do pliku basefile
     */
    BaseWriter(QString str):basefile(new QFile(str)){}

    /**
      * Dopisz osobę do pliku basefile
      *
      * @param p stała referencja do osoby, którą chcemy zapisać do bazy
      * @return zwraca true jeśli akcja zakończyła się powodzeniem
      **/
    bool write(const Person& p)
    {

        if (!basefile->open(QIODevice::ReadWrite | QIODevice::Append))
            return false;
        QString line=p.name()+"#"+p.lastname()+"#"+p.email()+"#";
        for (int i = 0; i < p.images().size()-1; ++i)
            line.append(p.urls().at(i)+";");
        line.append(p.urls().last());
        QTextStream stream(basefile);
        stream<<line<<"\n";
        basefile->close();
        return true;

    }
};

#endif // BASEWRITER_H
